﻿namespace DoNet.TenPay
{
    public class ResponseRefundResult : ResponseBase
    {
        /// <summary>
        /// 商户公众账号/应用ID
        /// 调用接口提交的商户公众账号ID
        /// </summary>
        public string appid { set; get; }
        /// <summary>
        /// 商户号
        /// 调用接口提交的商户号
        /// </summary>
        public string mch_id { set; get; }

        #region 服务商模式
        /// <summary>
        /// 子商户公众账号/应用ID
        /// 调用接口提交的子商户公众账号ID
        /// </summary>
        public string sub_appid { set; get; }
        /// <summary>
        /// 子商户号
        /// 调用接口提交的子商户号
        /// </summary>
        public string sub_mch_id { set; get; }
        #endregion 服务商模式

        /// <summary>
        /// 随机字符串
        /// 微信返回的随机字符串
        /// </summary>
        public string nonce_str { set; get; }
        /// <summary>
        /// 签名
        /// 微信返回的签名，详见签名生成算法
        /// </summary>
        public string sign { set; get; }
        /// <summary>
        /// 业务结果
        /// SUCCESS/FAIL
        /// </summary>
        public string result_code { set; get; }
        /// <summary>
        /// 错误代码
        /// 详细参见错误列表
        /// </summary>
        public string err_code { set; get; }
        /// <summary>
        /// 错误代码描述
        /// 错误返回的信息描述
        /// </summary>
        public string err_code_des { set; get; }
        /// <summary>
        /// 微信支付订单号
        /// </summary>
        public string transaction_id { set; get; }
        /// <summary>
        /// 商户订单号
        /// 商户系统内部订单号，要求32个字符内（最少6个字符），只能是数字、大小写字母_-|*且在同一个商户号下唯一。详见商户订单号
        /// </summary>
        public string out_trade_no { set; get; }
        /// <summary>
        /// 商户退款单号
        /// 商户系统内部的退款单号，商户系统内部唯一，只能是数字、大小写字母_-|*@ ，同一退款单号多次请求只退一笔。
        /// </summary>
        public string out_refund_no { set; get; }
        /// <summary>
        /// 微信退款单号
        /// </summary>
        public string refund_id { set; get; }
        /// <summary>
        /// 申请退款金额
        /// 退款总金额,单位为分,可以做部分退款
        /// </summary>
        public int refund_fee { set; get; }
        /// <summary>
        /// 退款金额
        /// 去掉非充值代金券退款金额后的退款金额，退款金额=申请退款金额-非充值代金券退款金额，退款金额<=申请退款金额
        /// </summary>
        public int settlement_refund_fee { set; get; }
        /// <summary>
        /// 订单金额
        /// 订单总金额，单位为分，只能为整数，详见支付金额
        /// </summary>
        public int total_fee { set; get; }
        /// <summary>
        /// 应结订单金额
        /// 当订单使用了免充值型优惠券后返回该参数，应结订单金额=订单金额-免充值优惠券金额。
        /// </summary>
        public int settlement_total_fee { set; get; }
        /// <summary>
        /// 货币种类
        /// 符合ISO 4217标准的三位字母代码，默认人民币：CNY，其他值列表详见货币类型
        /// </summary>
        public string fee_type { set; get; }
        /// <summary>
        /// 现金支付金额
        /// 订单现金支付金额，详见支付金额
        /// </summary>
        public int cash_fee { set; get; }
        /// <summary>
        /// 现金退款金额
        /// 现金退款金额，单位为分，只能为整数，详见支付金额
        /// </summary>
        public int cash_refund_fee { set; get; }
        /// <summary>
        /// 代金券退款总金额
        /// 代金券退款金额<=退款金额，退款金额-代金券或立减优惠退款金额为现金，说明详见代金券或立减优惠
        /// </summary>
        public int coupon_refund_fee { set; get; }
        /// <summary>
        /// 退款代金券使用数量
        /// </summary>
        public int coupon_refund_count { set; get; }

        /*
        代金券类型	 coupon_type_$n	否	 coupon_type_$n	否	 coupon_type_$n	否	 coupon_type_$n	否	 coupon_type_$n	否	String	"CASH--充值代金券
        NO_CASH---非充值优惠券
        开通免充值券功能，并且订单使用了优惠券后有返回（取值：CASH、NO_CASH）。$n为下标,从0开始编号，举例：coupon_type_$0"
        代金券ID	coupon_id_$n	否	coupon_id_$n	否	coupon_id_$n	否	coupon_id_$n	否	coupon_id_$n	否	String(20)	代金券或立减优惠ID, $n为下标，从0开始编号
        单个代金券金额	coupon_fee_$n	否	coupon_fee_$n	否	coupon_fee_$n	否	coupon_fee_$n	否	coupon_fee_$n	否	int	单个代金券或立减优惠支付金额, $n为下标，从0开始编号
        */
    }
}
